> ## Documentation Index
> Fetch the complete documentation index at: https://sequence-0fb8d9e6-relayer_docs.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Unreal Ecosystem Wallet Blockchain Interactions

> Ecosystem Wallet Documentation for Sequence's Unreal SDK.

## Sign messages

Sign messages on an external browser.

<Tabs>
  <Tab title="Blueprint">
    <Frame>
      <img src="https://mintcdn.com/sequence-0fb8d9e6-relayer_docs/ucv40TOkiu_4QScw/images/unreal/ecosystem/sign_message.png?fit=max&auto=format&n=ucv40TOkiu_4QScw&q=85&s=04f176cb271e36c12ca8e5520b2637dc" width="967" height="500" data-path="images/unreal/ecosystem/sign_message.png" />
    </Frame>
  </Tab>

  <Tab title="C++">
    ```cpp theme={null}
    const TSuccessCallback<bool> SuccessCallback = [OnSuccess](const bool& Result) { };
    const FFailureCallback FailureCallback = [OnFailure](const FSequenceError& Error) { };

    USequenceWallet* Wallet = NewObject<USequenceWallet>();
    Wallet->SignMessage(TEXT("some text"), SuccessCallback, FailureCallback);
    ```
  </Tab>
</Tabs>

## Transactions

### Get fee options

<Tabs>
  <Tab title="Blueprint">
    <Frame>
      <img src="https://mintcdn.com/sequence-0fb8d9e6-relayer_docs/ucv40TOkiu_4QScw/images/unreal/ecosystem/get_fee_options.png?fit=max&auto=format&n=ucv40TOkiu_4QScw&q=85&s=bab4cc513ea8ac77aae4a67ec75e78e9" width="1714" height="940" data-path="images/unreal/ecosystem/get_fee_options.png" />
    </Frame>
  </Tab>

  <Tab title="C++">
    ```cpp theme={null}
    const FString To = TEXT("0x33985d320809E26274a72E03268c8a29927Bc6dA");
    const FString Value = TEXT("0");
    const FString FunctionSignature = TEXT("explicitEmit()");
    const TArray<FString> Values = { };

    UContractTransaction* Transaction = UContractTransaction::CreateContractTransaction(To, Value, FunctionSignature, Values);

    const TSuccessCallback<FFeeOptionsResponse> SuccessCallback = [OnSuccess](const FFeeOptionsResponse& Response) { };
    const FFailureCallback FailureCallback = [OnFailure](const FSequenceError& Error) { };

    USequenceWallet* Wallet = NewObject<USequenceWallet>();
    Wallet->GetFeeOptions(Transaction, SuccessCallback, FailureCallback);
    ```
  </Tab>
</Tabs>

### Send transactions

<Tabs>
  <Tab title="Blueprint">
    <Frame>
      <img src="https://mintcdn.com/sequence-0fb8d9e6-relayer_docs/ucv40TOkiu_4QScw/images/unreal/ecosystem/send_transaction.png?fit=max&auto=format&n=ucv40TOkiu_4QScw&q=85&s=a73fd44ff765bb9d72d11e5c97159cac" width="1714" height="940" data-path="images/unreal/ecosystem/send_transaction.png" />
    </Frame>
  </Tab>

  <Tab title="C++">
    ```cpp theme={null}
    const FString To = TEXT("0x33985d320809E26274a72E03268c8a29927Bc6dA");
    const FString Value = TEXT("0");
    const FString FunctionSignature = TEXT("explicitEmit()");
    const TArray<FString> Values = { };

    UContractTransaction* Transaction = UContractTransaction::CreateContractTransaction(To, Value, FunctionSignature, Values);

    FFeeOption EmptyFee;

    const TSuccessCallback<FString> SuccessCallback = [OnSuccess](const FString& Result) { };
    const FFailureCallback FailureCallback = [OnFailure](const FSequenceError& Error) { };

    USequenceWallet* Wallet = NewObject<USequenceWallet>();
    Wallet->SendTransaction(Transaction, EmptyFee, SuccessCallback, FailureCallback);
    ```
  </Tab>
</Tabs>

### Send transactions without Permissions

Send transactions on an external browser.

<Tabs>
  <Tab title="Blueprint">
    <Frame>
      <img src="https://mintcdn.com/sequence-0fb8d9e6-relayer_docs/ucv40TOkiu_4QScw/images/unreal/ecosystem/transaction_without_permissions.png?fit=max&auto=format&n=ucv40TOkiu_4QScw&q=85&s=5ab8a2be3c8e244d311bdde7792244fc" width="952" height="500" data-path="images/unreal/ecosystem/transaction_without_permissions.png" />
    </Frame>
  </Tab>

  <Tab title="C++">
    ```cpp theme={null}
    const FString To = TEXT("0x33985d320809E26274a72E03268c8a29927Bc6dA");
    const FString Value = TEXT("0");
    const FString FunctionSignature = TEXT("explicitEmit()");
    const TArray<FString> Values = { };

    UContractTransaction* Transaction = UContractTransaction::CreateContractTransaction(To, Value, FunctionSignature, Values);

    const TSuccessCallback<FString> SuccessCallback = [OnSuccess](const FString& Result) { };
    const FFailureCallback FailureCallback = [OnFailure](const FSequenceError& Error) { };

    USequenceWallet* Wallet = NewObject<USequenceWallet>();
    Wallet->SendTransactionWithoutPermissions(Transaction, SuccessCallback, FailureCallback);
    ```
  </Tab>
</Tabs>

## Transaction Factory

### Create Contract Transaction

<Tabs>
  <Tab title="Blueprint">
    <Frame>
      <img src="https://mintcdn.com/sequence-0fb8d9e6-relayer_docs/WrjrSprbhq9p8G24/images/unreal/ecosystem/create_contract_transaction.png?fit=max&auto=format&n=WrjrSprbhq9p8G24&q=85&s=774a7cc06e6f35b82dcb2b4465bc89ad" width="1480" height="758" data-path="images/unreal/ecosystem/create_contract_transaction.png" />
    </Frame>
  </Tab>

  <Tab title="C++">
    ```cpp theme={null}
    const FString To = TEXT("0x33985d320809E26274a72E03268c8a29927Bc6dA");
    const FString Value = TEXT("0");
    const FString FunctionSignature = TEXT("explicitEmit()");
    const TArray<FString> Values = { };

    UContractTransaction* Transaction = UContractTransaction::CreateContractTransaction(To, Value, FunctionSignature, Values);
    ```
  </Tab>
</Tabs>

### Create Call Data Transaction

<Tabs>
  <Tab title="Blueprint">
    <Frame>
      <img src="https://mintcdn.com/sequence-0fb8d9e6-relayer_docs/WrjrSprbhq9p8G24/images/unreal/ecosystem/create_call_data_transaction.png?fit=max&auto=format&n=WrjrSprbhq9p8G24&q=85&s=fc04969e54005d77937332f97c8baf37" width="1480" height="758" data-path="images/unreal/ecosystem/create_call_data_transaction.png" />
    </Frame>
  </Tab>

  <Tab title="C++">
    ```cpp theme={null}
    const FString To = TEXT("0x33985d320809E26274a72E03268c8a29927Bc6dA");
    const FString Value = TEXT("0");
    const FString Data = TEXT("0x00...");

    UCallDataTransaction* Transaction = UCallDataTransaction::CreateCallDataTransaction(To, Value, Data);
    ```
  </Tab>
</Tabs>

### Create Transaction Batch

<Tabs>
  <Tab title="Blueprint">
    <Frame>
      <img src="https://mintcdn.com/sequence-0fb8d9e6-relayer_docs/WrjrSprbhq9p8G24/images/unreal/ecosystem/create_transaction_batch.png?fit=max&auto=format&n=WrjrSprbhq9p8G24&q=85&s=0858a9fc5b65b40fa71b7c55a658338f" width="1480" height="758" data-path="images/unreal/ecosystem/create_transaction_batch.png" />
    </Frame>
  </Tab>

  <Tab title="C++">
    ```cpp theme={null}
    TArray<TScriptInterface<ISeqTransactionBase>> Transactions;
    Transactions.Add(UCallDataTransaction::CreateCallDataTransaction("0x123...", "0", "0x00.."));

    UTransactionBatch* Transaction = UTransactionBatch::CreateTransactionBatch(To, Value, Data);
    ```
  </Tab>
</Tabs>
